#ifndef _VARIABLES_H_
#define _VARIABLES_H_

typedef struct INDIVIDUAL_STRUCT {

  double *design_variables;
  double function_value;

} INDIVIDUAL;

typedef struct LAYER_STRUCT {

  double *center;
  double *sigma;
  INDIVIDUAL *individuals;

} LAYER;

typedef struct ARCHIVE_STRUCT {

  INDIVIDUAL *individuals;

} ARCHIVE;


extern LAYER *layers;
extern ARCHIVE *archive;
extern char *dirname; // Directory name for gnuplot output

extern int each_individuals; // number of individuals created on each layers
extern int number_of_layers;
extern double alpha;
extern double *beta;
extern double beta1;
extern double betaL;

extern int gnuplot_type;
extern int msg_type;

extern char *function_name;
extern int number_of_dimensions;
extern double upper_limit;
extern double lower_limit;

extern int max_evaluations;
extern double termination_eps;
extern double K;

extern int number_of_evaluations;
extern int number_of_generations;
extern int total_population_size;
extern int seed;

#endif //_VARIABLES_H_
